// createRouter:     创建router实例对象      地址栏不带#
// createWebHistory: 创建history模式的路由   地址栏带 #
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/index'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    // 一级路由，登录页
    { path: '/login', component: () => import('@/views/Login/LoginPage.vue') },
    // 一级路由，首页
    {
      path: '/',
      component: () => import('@/views/Layout/LayoutContainer.vue'),
      // 重定向到文章管理页面
      redirect: '/role',
      // 二级子路由
      children: [
        { path: '/role', component: () => import('@/views/Role/RolePage.vue') },
        {
          path: '/platform',
          component: () => import('@/views/Platform/PlatformPage.vue'),
          // 三级子路由
          children: [
            { path: '/manager_auth', component: () => import('@/views/Platform/Manager/ManagerAuth.vue') }
          ]
        },
        { path: '/shop', component: () => import('@/views/Shop/ShopPage.vue') },
        { path: '/operation', component: () => import('@/views/Operation/OperationPage.vue') },
      ]
    },
  ]
})

// 路由拦截器 - 导航守卫 前置守卫
// 登录访问拦截  =>  默认是直接放行
// 根据返回值决定，是放行还是拦截
// 返回值：直接放行
// 1. undefined / true
// 2. false 拦回from的地址页面
// 3. 具体路径或路径对象拦截到对应的地址
//    '/login' { name: 'login' }
router.beforeEach((to) => {
  // 如果没有token，且访问的是非登录页，拦截到登录，其他情况正常放行
  const useStore = useUserStore()
  if(!useStore.token && to.path !== '/login') return '/login'
  // return true
})

export default router
